home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / kernel / jumpto / jumpto.tch < prev    next >
Text File  |  1995-08-08  |  2KB  |  98 lines

  1. ;    Dynace jumpto function for Turbo C++ 1.00 - huge memory model
  2. ;
  3.     ifndef    ??version
  4. ?debug    macro
  5.     endm
  6. $comm    macro    name,dist,size,count
  7.     comm    dist name:BYTE:count*size
  8.     endm
  9.     else
  10. $comm    macro    name,dist,size,count
  11.     comm    dist name[size]:BYTE:count
  12.     endm
  13.     endif
  14.     ?debug    S "jumpto.c"
  15.     ?debug    C E9ED960415086A756D70746F2E63
  16.     ?debug    C E9B7460715056F69632E68
  17.     ?debug    C E9014D07150A6F69636F6E6669672E68
  18.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7374646465662E+
  19.     ?debug    C 68
  20.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7374646172672E+
  21.     ?debug    C 68
  22.     ?debug    C E90E5A07150A67656E65726963732E68
  23.     ?debug    C E9C09C0515076572726F722E68
  24.     ?debug    C E9C09C05150A65786373746174652E68
  25.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7365746A6D702E+
  26.     ?debug    C 68
  27. JUMPTO_TEXT    segment byte public 'CODE'
  28. JUMPTO_TEXT    ends
  29.     assume    cs:JUMPTO_TEXT,ds:JUMPTO_DATA
  30. JUMPTO_DATA    segment word public 'DATA'
  31. d@    label    byte
  32. d@w    label    word
  33. b@    label    byte
  34. b@w    label    word
  35. JUMPTO_DATA    ends
  36. JUMPTO_TEXT    segment byte public 'CODE'
  37.    ;    
  38.    ;    void    _jumpToMethod(func)
  39.    ;    
  40.     assume    cs:JUMPTO_TEXT
  41. __jumpToMethod    proc    far
  42.     push    bp
  43.     mov    bp,sp
  44. ;    push    ds
  45. ;    mov    ax,JUMPTO_DATA
  46. ;    mov    ds,ax
  47.    ;    
  48.    ;    void    (*func)();
  49.    ;     {
  50.    ;    
  51.    ;    /*     pop_this_stack_frame;    */
  52.    ;    
  53.    ;    /*     pop previous (generics) stack frame  */
  54.    ;    
  55.    ;         (*func)();    /*  must be changed to jump instruction   */
  56.    ;    
  57. ;    call    dword ptr [bp+6]
  58.    ;    
  59.    ;     }
  60.    ;    
  61. ;    pop    ds
  62. ;    pop    bp
  63. ;    ret    
  64. ;
  65. ;    NEW CODE:
  66. ;
  67. ;    save jump address
  68. ;
  69.     mov    ax, word ptr [bp+6]
  70.     mov    dx, word ptr [bp+8]
  71. ;
  72. ;    restore current state
  73. ;
  74. ;    pop    ds
  75.     pop    bp
  76. ;
  77. ;    restore previous state
  78. ;
  79.     add    sp,8
  80.     pop    ds
  81.     pop    bp
  82. ;
  83. ;    perform jump
  84. ;
  85.     push    dx
  86.     push    ax
  87.     ret
  88. __jumpToMethod    endp
  89.     ?debug    C E9
  90. JUMPTO_TEXT    ends
  91. JUMPTO_DATA    segment word public 'DATA'
  92. s@    label    byte
  93. JUMPTO_DATA    ends
  94. JUMPTO_TEXT    segment byte public 'CODE'
  95. JUMPTO_TEXT    ends
  96.     public    __jumpToMethod
  97.     end
  98.